package Algorithm.sort;

public class Insertion <T extends Comparable<T>> extends Sort<T>{
    @Override
    public void sort(T[] nums) {
        int N=nums.length;//N记录下数组的长度
        for (int i = 0; i < N; i++) {//i:从0位置开始遍历,直到最后一个位置
            for (int j =i; j>0&&less(nums[j],nums[j-1]);j--) {//当j大于零,j会从下标为[i]的元素开始遍历,每次遍历到第一个元素,如果中途j比它前一个元素小,会进行交换,
                // 之后会再次从先前的前一个位置再次遍历,直到子数组(0-i)有序;
                swap(nums,j,j-1);//j比它前一个元素小(它和它前一个位置元素顺序不是从小到大),进行交换
            }
        }
    }
}
